//GROUND TILES
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//   using 3Dmigoto v1.3.16 on Wed Mar 23 18:05:20 2022
//
//
// Buffer Definitions:
//
// cbuffer $Globals
// {
//
//   float4x4 g_mCloudsShadowsSpace;    // Index:    0 1 2 3          Components:    16 [unused]
//      = 0x00000000 0x00000000 0x00000000 0x00000000
//        0x00000000 0x00000000 0x00000000 0x00000000
//        0x00000000 0x00000000 0x00000000 0x00000000
//        0x00000000 0x00000000 0x00000000 0x00000000
//   float4 g_vCloudsShadowDesc;        // Index:    4.xyzw           Components:     4 [unused]
//      = 0x00000000 0x00000000 0x00000000 0x00000000
//   float4 g_vKSettings;               // Index:    5.xyzw           Components:     4
//   float4x4 g_mPrevObjViewProj;       // Index:    6 7 8 9          Components:    16
//   int4 g_vnStartCascadeInstance;     // Index:   10.xyzw           Components:     4 [unused]
//      = 0x00000000 0x00000000 0x00000000 0x00000000
//   float4 g_vDefSettings;             // Index:   11.xyzw           Components:     4 [unused]
//   float4 ambient;                    // Index:   12.xyzw           Components:     4 [unused]
//   float4 g_vDefLightDir;             // Index:   13.xyzw           Components:     4
//   float4 g_vDefLightColor;           // Index:   14.xyzw           Components:     4 [unused]
//   float4 g_vDefSpecColor;            // Index:   15.xyzw           Components:     4 [unused]
//   float4 g_vScreenDepthRect;         // Index:   16.xyzw           Components:     4 [unused]
//   int4 g_vnSidesLODStep;             // Index:   17.xyzw           Components:     4 [unused]
//   int4 g_vnSectorRect;               // Index:   18.xyzw           Components:     4 [unused]
//   float4 g_vForestPlaneThreshold;    // Index:   19.xyzw           Components:     4 [unused]
//      = 0x44a28000 0x3b03126f 0x00000000 0x00000000
//   float4 LowDeepColor;               // Index:   20.xyzw           Components:     4 [unused]
//      = 0x3e99999a 0x3ecccccd 0x3ecccccd 0x00000000
//   float4 g_vSeaColor;                // Index:   21.xyzw           Components:     4 [unused]
//      = 0x3dcccccd 0x3e99999a 0x3e99999a 0x00000000
//   float4 DetailScale;                // Index:   22.xyzw           Components:     4
//      = 0x3f800000 0x3f800000 0x3f800000 0x3f800000
//   float4 g_vIceScale;                // Index:   23.xyzw           Components:     4 [unused]
//      = 0x3f800000 0x3f800000 0x3f800000 0x3f800000
//   float4 g_vLandSettings;            // Index:   24.xyzw           Components:     4 [unused]
//   float4 g_vSpecSettings;            // Index:   25.xyzw           Components:     4
//      = 0x3f800000 0x3f800000 0x3f800000 0x3f800000
//   float4 g_vSpecIceSettings;         // Index:   26.xyzw           Components:     4 [unused]
//      = 0x00000000 0x00000000 0x3f800000 0x3f800000
//   float4 g_vSeaCorrection;           // Index:   27.xyzw           Components:     4 [unused]
//   float4 g_vSeaDesc;                 // Index:   28.xyzw           Components:     4 [unused]
//      = 0x3ecccccd 0x3f19999a 0x40800000 0x3f7ae148
//   float4 g_vSeaHarmonics;            // Index:   29.xyzw           Components:     4 [unused]
//      = 0x3f800000 0x3f800000 0x3f800000 0x3f800000
//   float4 g_vWaterDesc;               // Index:   30.xyzw           Components:     4
//      = 0x3ecccccd 0x3f19999a 0x40800000 0x3f7ae148
//   float4 g_vWaterColor;              // Index:   31.xyzw           Components:     4
//      = 0x3f800000 0x00000000 0x00000000 0x00000000
//   float4 g_vWaterSpecColor;          // Index:   32.xyzw           Components:     4
//      = 0x3f800000 0x3f800000 0x3f800000 0x42a00000
//   float4 Anim;                       // Index:   33.xyzw           Components:     4
//   float4 g_vAsyncTextureSize;        // Index:   34.xyzw           Components:     4 [unused]
//      = 0x3f800000 0x3f800000 0x00000000 0x00000000
//   float4 g_vRTTexSize;               // Index:   35.xyzw           Components:     4
//   float4 g_vAnisotropy;              // Index:   36.xyzw           Components:     4
//   float2 TexelOffs[9];               // Index:   37-45.y           Components:    34 [unused]
//      = 0x00000000 0x00000000 0x00000000 0x00000000
//        0xba800000 0x00000000 0x00000000 0x00000000
//        0x3a800000 0x00000000 0x00000000 0x00000000
//        0x00000000 0xba800000 0x00000000 0x00000000
//        0x00000000 0x3a800000 0x00000000 0x00000000
//        0xbb000000 0xbb000000 0x00000000 0x00000000
//        0x3b000000 0xbb000000 0x00000000 0x00000000
//        0x3b000000 0x3b000000 0x00000000 0x00000000
//        0xbb000000 0x3b000000
//   float4 g_avGroundColor[9];         // Index:   46-54             Components:    36 [unused]
//   float4x4 g_mWorldViewProjection;   // Index:   55 56 57 58       Components:    16
//   float4x4 g_mView;                  // Index:   59 60 61 62       Components:    16 [unused]
//   float3 chunkColor;                 // Index:   63.xyz            Components:     3 [unused]
//   float4 g_deltaCam;                 // Index:   64.xyzw           Components:     4 [unused]
//   float4 mapSize;                    // Index:   65.xyzw           Components:     4 [unused]
//   float4x4 g_textureRotation;        // Index:   66 67 68 69       Components:    16 [unused]
//   float3 textureCoordsP1;            // Index:   70.xyz            Components:     3
//   float3 textureCoordsP2;            // Index:   71.xyz            Components:     3
//   float3 chunkInSectorCoords;        // Index:   72.xyz            Components:     3 [unused]
//   float4 chunkInfo;                  // Index:   73.xyzw           Components:     4 [unused]
//   float4 g_vSettings;                // Index:   74.xyzw           Components:     4
//   float4 g_vPlaneSettings;           // Index:   75.xyzw           Components:     4 [unused]
//   float4 g_vPlaneOffset;             // Index:   76.xyzw           Components:     4 [unused]
//   float3 GrayK;                      // Index:   77.xyz            Components:     3
//      = 0x3eaa7efa 0x3eaa7efa 0x3eaa7efa
//   float4 g_vForestFarSettings;       // Index:   78.xyzw           Components:     4 [unused]
//   float4 g_vDetailOffset;            // Index:   79.xyzw           Components:     4 [unused]
//   float4 g_vDetailSectorOffset;      // Index:   80.xyzw           Components:     4 [unused]
//   float4 g_vDetailSettings;          // Index:   81.xyzw           Components:     4 [unused]
//   float4 g_vParalaxSettings;         // Index:   82.xyzw           Components:     4 [unused]
//      = 0x3e19999a 0x3f800000 0x43480000 0x00000000
//   int4 g_vDetailHeightSettings;      // Index:   83.xyzw           Components:     4 [unused]
//   float4 DetailRTCoords;             // Index:   84.xyzw           Components:     4 [unused]
//   float4 g_vPRTSettings;             // Index:   85.xyzw           Components:     4 [unused]
//      = 0x00000000 0x00000000 0x42480000 0x3a000000
//   float4 g_vPRTRanges;               // Index:   86.xyzw           Components:     4 [unused]
//   float4 g_vDetailScreenRes;         // Index:   87.xyzw           Components:     4 [unused]
//   float4 g_vDetailDisplaceRect;      // Index:   88.xyzw           Components:     4
//   float4 g_avDetailFrustrumPlanes[4];// Index:   89 90 91 92       Components:    16 [unused]
//   float4 g_avMask[4];                // Index:   93 94 95 96       Components:    16 [unused]
//      = 0x3f800000 0x00000000 0x00000000 0x00000000
//        0x00000000 0x3f800000 0x00000000 0x00000000
//        0x00000000 0x00000000 0x3f800000 0x00000000
//        0x00000000 0x00000000 0x00000000 0x3f800000
//   uint2 g_avuOffset[4];              // Index:   97-100.y          Components:    14 [unused]
//      = 0x00000000 0x00000000 0x00000000 0x00000000
//        0x00000001 0x00000000 0x00000000 0x00000000
//        0x00000001 0x00000001 0x00000000 0x00000000
//        0x00000000 0x00000001
//   float4 g_avPRTMaskInv[4];          // Index:  101 102 103 104    Components:    16 [unused]
//      = 0x00000000 0x00000000 0x00000000 0x3f800000
//        0x00000000 0x00000000 0x3f800000 0x00000000
//        0x00000000 0x3f800000 0x00000000 0x00000000
//        0x3f800000 0x00000000 0x00000000 0x00000000
//   float4 g_avPRTMask[4];             // Index:  105 106 107 108    Components:    16 [unused]
//      = 0x3f800000 0x00000000 0x00000000 0x00000000
//        0x00000000 0x3f800000 0x00000000 0x00000000
//        0x00000000 0x00000000 0x3f800000 0x00000000
//        0x00000000 0x00000000 0x00000000 0x3f800000
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// SamplerLerp                       sampler      NA          NA    0        1
// WaterNormalsSampler               sampler      NA          NA    1        1
// NormalTextureSampler              sampler      NA          NA    2        1
// ParalaxRTSampler                  sampler      NA          NA    3        1
// NormalTextureSampler              texture  float4          2d    0        1
// WaterNormalsSampler               texture  float4          3d    1        1
// g_tRTDiffuse                      texture  float4          2d    2        1
// g_tRTNormals                      texture  float4          2d    3        1
// g_tDetail0                        texture  float4          2d    4        1
// g_tDisplaceRT                     texture  float4          2d    5        1
// $Globals                          cbuffer      NA          NA    0        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float
// TEXCOORD                 0   xyzw        1     NONE   float   xyzw
// TEXCOORD                 1   xyzw        2     NONE   float
// TEXCOORD                 3   xyzw        3     NONE   float   xy
// TEXCOORD                 4   xyzw        4     NONE   float      w
// TEXCOORD                 5   xyz         5     NONE   float   xyz
// TEXCOORD                 6   xyzw        6     NONE   float
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
// SV_Target                1   xyzw        1   TARGET   float   xyzw
// SV_Target                2   xyzw        2   TARGET   float   xyzw
// SV_Target                3   xy          3   TARGET   float   xy
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[89], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture3d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_texture2d (float,float,float,float) t5
dcl_input_ps linear centroid v1.xyzw
dcl_input_ps linear v3.xy
dcl_input_ps linear v4.w
dcl_input_ps linear v5.xyz
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output o3.xy
dcl_temps 9
lt r0.x, l(0.000000), cb0[88].z
if_nz r0.x
  dp3 r0.x, v5.xyzx, v5.xyzx
  lt r0.x, r0.x, l(5184.000000)
  if_nz r0.x
    add r0.xy, v5.xzxx, -cb0[88].xyxx
    mul r0.xy, r0.xyxx, cb0[88].zwzz
    sample_l_indexable(texture2d)(float,float,float,float) r0.x, r0.xyxx, t5.xyzw, s3, l(0.000000)
    lt r0.x, l(0.990000), r0.x
    if_nz r0.x
      discard_nz l(-1)
    endif
  endif
endif
sample_indexable(texture2d)(float,float,float,float) r0.xyz, v1.zwzz, t0.xyzw, s2
mad r0.xyz, r0.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
dp3 r0.w, r0.xyzx, r0.xyzx
rsq r0.w, r0.w
mul r0.xyz, r0.wwww, r0.xyzx
lt r0.w, cb0[36].y, l(0.500000)
if_nz r0.w
  sample_l_indexable(texture2d)(float,float,float,float) r1.xyzw, v1.xyxx, t2.xyzw, s0, l(0.000000)
endif
if_z r0.w
  mul r2.x, v4.w, cb0[36].x
  mul r2.x, r2.x, cb0[36].y
  dp3 r2.y, -v5.xyzx, -v5.xyzx
  rsq r2.y, r2.y
  mul r2.yzw, r2.yyyy, -v5.xxyz
  dp3 r2.y, r2.yzwy, r0.xyzx
  max r2.y, r2.y, l(0.001000)
  div r2.x, r2.x, r2.y
  div r2.x, r2.x, cb0[35].y
  min r2.x, r2.x, l(64.000000)
  add r2.y, r2.x, l(0.500000)
  ftoi r2.y, r2.y
  ilt r2.z, l(1), r2.y
  if_nz r2.z
    mul r2.zw, v5.xxxz, l(0.000000, 0.000000, 1.000000, -1.000000)
    dp2 r3.x, r2.zwzz, r2.zwzz
    rsq r3.x, r3.x
    mul r2.zw, r2.zzzw, r3.xxxx
    mul r2.zw, r2.zzzw, cb0[35].xxxx
    mul r2.xz, r2.xxxx, r2.zzwz
    mad r3.xy, -r2.xzxx, l(0.500000, 0.500000, 0.000000, 0.000000), v1.xyxx
    imin r2.y, r2.y, l(5)
    itof r2.w, r2.y
    div r2.w, l(1.000000, 1.000000, 1.000000, 1.000000), r2.w
    mov r4.yz, cb0[71].yyxy
    mov r4.xw, cb0[70].xxxy
    mov r5.xyzw, l(0,0,0,0)
    mov r3.zw, r3.xxxy
    mov r6.x, l(0)
    loop
      ige r6.y, r6.x, r2.y
      breakc_nz r6.y
      max r6.yz, r4.xxyx, r3.zzwz
      min r6.yz, r4.zzwz, r6.yyzy
      sample_l_indexable(texture2d)(float,float,float,float) r7.xyzw, r6.yzyy, t2.xyzw, s0, l(0.000000)
      add r5.xyzw, r5.xyzw, r7.xyzw
      mad r3.zw, r2.xxxz, r2.wwww, r3.zzzw
      iadd r6.x, r6.x, l(1)
    endloop
    mul r1.xyzw, r2.wwww, r5.xyzw
  else
    sample_l_indexable(texture2d)(float,float,float,float) r1.xyzw, v1.xyxx, t2.xyzw, s0, l(0.000000)
  endif
endif
////////////////////////////////////////////////////////////////////////
mov o0.w, l(1.0)
///////////////////////////////////////////////
add r2.xyz, r1.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000)
mad r2.xyz, cb0[74].xxxx, r2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
add r1.w, r1.w, l(-0.500000)
mad_sat r1.w, r1.w, l(2.000000), l(0.500000)
mul r3.xyzw, v3.xyxy, cb0[22].xxyy
sample_indexable(texture2d)(float,float,float,float) r2.w, r3.xyxx, t4.xywz, s0
sample_indexable(texture2d)(float,float,float,float) r3.x, r3.zwzz, t4.xyzw, s0
add r2.w, r2.w, r3.x
mul r3.x, r2.w, l(0.500000)
mad r2.w, -r2.w, l(0.500000), l(1.000000)
mad r2.w, r1.w, r2.w, r3.x
mul r2.xyz, r2.wwww, r2.xyzx
lt r2.w, l(0.100000), r1.w
if_nz r2.w
  dp3 r3.x, v5.xyzx, v5.xyzx
  rsq r3.x, r3.x
  mad r3.xyz, -v5.xyzx, r3.xxxx, -cb0[13].xyzx
  mul r3.xyz, r3.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
  dp3 r3.x, r3.xyzx, r3.xyzx
  rsq r3.x, r3.x
  mul r3.x, r3.x, r3.y
  max r3.x, r3.x, l(0.000000)
  max r3.y, -cb0[13].y, l(0.000000)
  min r3.y, r3.y, l(0.010000)
  mul r3.x, r3.x, r3.y
  mul r3.x, r3.x, l(100.000000)
  log r3.x, r3.x
  mul r3.x, r3.x, l(10.000000)
  exp r3.x, r3.x
  mad r3.x, r3.x, l(0.500000), l(1.000000)
  mad r1.xyz, r1.xyzx, r3.xxxx, -r2.xyzx
  mad r2.xyz, r1.wwww, r1.xyzx, r2.xyzx
endif
if_nz r0.w
  sample_l_indexable(texture2d)(float,float,float,float) r1.xy, v1.xyxx, t3.xzyw, s0, l(0.000000)
endif
if_z r0.w
  mul r0.w, v4.w, cb0[36].x
  mul r0.w, r0.w, cb0[36].y
  dp3 r1.z, -v5.xyzx, -v5.xyzx
  rsq r1.z, r1.z
  mul r3.xyz, r1.zzzz, -v5.xyzx
  dp3 r1.z, r3.xyzx, r0.xyzx
  max r1.z, r1.z, l(0.001000)
  div r0.w, r0.w, r1.z
  div r0.w, r0.w, cb0[35].y
  min r0.w, r0.w, l(64.000000)
  add r1.z, r0.w, l(0.500000)
  ftoi r1.z, r1.z
  ilt r3.x, l(1), r1.z
  if_nz r3.x
    mul r3.xy, v5.xzxx, l(1.000000, -1.000000, 0.000000, 0.000000)
    dp2 r3.z, r3.xyxx, r3.xyxx
    rsq r3.z, r3.z
    mul r3.xy, r3.zzzz, r3.xyxx
    mul r3.xy, r3.xyxx, cb0[35].xxxx
    mul r3.xy, r0.wwww, r3.xyxx
    mad r3.zw, -r3.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000), v1.xxxy
    imin r0.w, r1.z, l(5)
    itof r1.z, r0.w
    div r1.z, l(1.000000, 1.000000, 1.000000, 1.000000), r1.z
    mov r4.yz, cb0[71].yyxy
    mov r4.xw, cb0[70].xxxy
    mov r5.xy, l(0,0,0,0)
    mov r5.zw, r3.zzzw
    mov r6.x, l(0)
    loop
      ige r6.y, r6.x, r0.w
      breakc_nz r6.y
      max r6.yz, r4.xxyx, r5.zzwz
      min r6.yz, r4.zzwz, r6.yyzy
      sample_l_indexable(texture2d)(float,float,float,float) r6.yz, r6.yzyy, t3.yxzw, s0, l(0.000000)
      add r5.xy, r5.xyxx, r6.yzyy
      mad r5.zw, r3.xxxy, r1.zzzz, r5.zzzw
      iadd r6.x, r6.x, l(1)
    endloop
    mul r1.xy, r1.zzzz, r5.xyxx
  else
    sample_l_indexable(texture2d)(float,float,float,float) r1.xy, v1.xyxx, t3.xzyw, s0, l(0.000000)
  endif
endif
mad r1.xy, r1.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), r0.xzxx
add r0.xz, r1.xxyx, l(-1.000000, 0.000000, -1.000000, 0.000000)
dp3 r0.w, r0.xyzx, r0.xyzx
rsq r0.w, r0.w
mul r1.xyz, r0.wwww, r0.xyzx
dp3 r3.x, r2.xyzx, cb0[77].xyzx
add r3.x, r3.x, -cb0[25].z
mul r3.x, r3.x, l(5.000000)
max r3.x, r3.x, l(0.000000)
min r3.x, r3.x, l(2.000000)
add r3.y, -r1.w, l(1.000000)
mul r3.x, r3.y, r3.x
mul_sat r3.y, cb0[13].y, l(-100.000000)
mul r3.x, r3.y, r3.x
mul r4.y, r3.x, cb0[25].y
mul r5.xy, v3.xyxx, cb0[30].xxxx
mov r5.z, cb0[33].x
sample_indexable(texture3d)(float,float,float,float) r3.xzw, r5.xyzx, t1.xwyz, s1
mul r6.xyz, r5.xyzx, l(11.000000, 11.000000, 5.000000, 0.000000)
sample_indexable(texture3d)(float,float,float,float) r6.xy, r6.xyzx, t1.xzyw, s1
mul r5.xyz, r5.xyzx, l(0.200000, 0.200000, 1.000000, 0.000000)
sample_indexable(texture3d)(float,float,float,float) r5.xyz, r5.xyzx, t1.xyzw, s1
if_nz r2.w
  mad r5.xyz, r5.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
  dp3 r2.w, v5.xyzx, v5.xyzx
  sqrt r2.w, r2.w
  add r2.w, r2.w, l(-5000.000000)
  mul_sat r2.w, r2.w, l(0.000200)
  lt r6.z, r2.w, l(0.999000)
  if_nz r6.z
    mad r3.xzw, r3.xxzw, l(2.000000, 0.000000, 2.000000, 2.000000), l(-1.000000, 0.000000, -1.000000, -1.000000)
    mad r6.xy, r6.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
    mul r6.xy, r6.xyxx, l(0.300000, 0.300000, 0.000000, 0.000000)
    mad r6.xy, r3.xwxx, cb0[30].yyyy, r6.xyxx
    mad r3.xw, r5.xxxz, l(0.500000, 0.000000, 0.000000, 0.500000), r6.xxxy
    dp3 r6.x, r3.xzwx, r3.xzwx
    rsq r6.x, r6.x
    mul r3.xzw, r3.xxzw, r6.xxxx
    lt r6.x, l(0.001000), r2.w
    if_nz r6.x
      mul r5.w, r5.y, l(10.000000)
      dp3 r6.x, r5.xzwx, r5.xzwx
      rsq r6.x, r6.x
      mad r6.xyz, r5.xwzx, r6.xxxx, -r3.xzwx
      mad r3.xzw, r2.wwww, r6.xxyz, r3.xxzw
    endif
  else
    mul r5.xyz, r5.xyzx, l(1.000000, 10.000000, 1.000000, 0.000000)
    dp3 r2.w, r5.xyzx, r5.xyzx
    rsq r2.w, r2.w
    mul r3.xzw, r2.wwww, r5.xxyz
  endif
  mul r5.xz, r3.xxwx, cb0[30].zzzz
  mov r5.y, r3.z
  dp3 r2.w, r5.xyzx, r5.xyzx
  rsq r2.w, r2.w
  mul r5.xyz, r2.wwww, r5.xyzx
  dp3 r2.w, -v5.xyzx, -v5.xyzx
  rsq r2.w, r2.w
  mul r6.xyz, r2.wwww, -v5.xyzx
  dp3 r2.w, r6.xyzx, r5.xyzx
  add r2.w, r2.w, l(1.000000)
  mul r2.w, r2.w, r2.w
  mul r5.x, r2.w, r2.w
  mul r2.w, r2.w, r5.x
  div r2.w, l(1.000000, 1.000000, 1.000000, 1.000000), r2.w
  mul r2.w, r1.w, r2.w
  min r2.w, r2.w, l(1.000000)
  mad r4.z, r2.w, cb0[31].w, l(0.010000)
  add r2.w, -cb0[13].y, l(-0.100000)
  mul_sat r2.w, r2.w, l(4.000000)
  mad r0.xyz, -r0.xyzx, r0.wwww, r3.xzwx
  mad r0.xyz, r1.wwww, r0.xyzx, r1.xyzx
  dp3 r0.w, r0.xyzx, r0.xyzx
  rsq r0.w, r0.w
  mul r1.xyz, r0.wwww, r0.xyzx
  add r0.x, r2.w, l(0.100000)
  mul r0.x, r0.x, cb0[32].w
  mul r0.z, r3.y, cb0[32].y
  mul r0.y, r1.w, r0.z
  mov r4.x, cb0[25].x
  add r0.xy, -r4.xyxx, r0.xyxx
  mad r4.xy, r1.wwww, r0.xyxx, r4.xyxx
  mov r4.w, l(1.000000)
else
  mov r4.x, cb0[25].x
  mov r4.zw, l(0,0,0,0.075000)
endif
mad o1.xyz, r1.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)
mul r4.x, r4.x, l(0.00392156886)
lt r0.x, cb0[5].x, l(0.500000)
if_nz r0.x
  mov o3.xy, l(0,0,0,0)
else
  mov r0.xyz, v5.xyzx
  mov r0.w, l(1.000000)
  dp4 r1.x, r0.xyzw, cb0[55].xyzw
  dp4 r1.y, r0.xyzw, cb0[56].xyzw
  dp4 r1.z, r0.xyzw, cb0[58].xyzw
  div r1.xy, r1.xyxx, r1.zzzz
  dp4 r3.x, r0.xyzw, cb0[6].xyzw
  dp4 r3.y, r0.xyzw, cb0[7].xyzw
  dp4 r0.x, r0.xyzw, cb0[9].xyzw
  div r0.xy, r3.xyxx, r0.xxxx
  add r0.xy, -r0.xyxx, r1.xyxx
  mul r0.z, -r0.y, cb0[5].y
  dp2 r0.y, r0.xzxx, r0.xzxx
  sqrt r0.y, r0.y
  lt r0.w, l(2.000000), r0.y
  if_nz r0.w
    div r0.y, l(2.000000), r0.y
    mul o3.xy, r0.yyyy, r0.xzxx
  else
    mov o3.xy, r0.xzxx
  endif
endif
mov o0.xyz, r2.xyzx
//mov o0.w, l(0.0) //////////// OLD OUTPUT
mov o1.w, l(0)
mov o2.xyzw, r4.yxzw
ret
// Approximately 270 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v1.3.16 on Wed Mar 23 18:05:20 2022
//
// cbuffer _Globals : register(b0)
// {
//   float4x4 g_mCloudsShadowsSpace : packoffset(c0) = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//   float4 g_vCloudsShadowDesc : packoffset(c4) = {0,0,0,0};
//   float4 g_vKSettings : packoffset(c5);
//   float4x4 g_mPrevObjViewProj : packoffset(c6);
//   int4 g_vnStartCascadeInstance : packoffset(c10) = {0,0,0,0};
//   float4 g_vDefSettings : packoffset(c11);
//   float4 ambient : packoffset(c12);
//   float4 g_vDefLightDir : packoffset(c13);
//   float4 g_vDefLightColor : packoffset(c14);
//   float4 g_vDefSpecColor : packoffset(c15);
//   float4 g_vScreenDepthRect : packoffset(c16);
//   int4 g_vnSidesLODStep : packoffset(c17);
//   int4 g_vnSectorRect : packoffset(c18);
//   float4 g_vForestPlaneThreshold : packoffset(c19) = {1300,0.00200000009,0,0};
//   float4 LowDeepColor : packoffset(c20) = {0.300000012,0.400000006,0.400000006,0};
//   float4 g_vSeaColor : packoffset(c21) = {0.100000001,0.300000012,0.300000012,0};
//   float4 DetailScale : packoffset(c22) = {1,1,1,1};
//   float4 g_vIceScale : packoffset(c23) = {1,1,1,1};
//   float4 g_vLandSettings : packoffset(c24);
//   float4 g_vSpecSettings : packoffset(c25) = {1,1,1,1};
//   float4 g_vSpecIceSettings : packoffset(c26) = {0,0,1,1};
//   float4 g_vSeaCorrection : packoffset(c27);
//   float4 g_vSeaDesc : packoffset(c28) = {0.400000006,0.600000024,4,0.980000019};
//   float4 g_vSeaHarmonics : packoffset(c29) = {1,1,1,1};
//   float4 g_vWaterDesc : packoffset(c30) = {0.400000006,0.600000024,4,0.980000019};
//   float4 g_vWaterColor : packoffset(c31) = {1,0,0,0};
//   float4 g_vWaterSpecColor : packoffset(c32) = {1,1,1,80};
//   float4 Anim : packoffset(c33);
//   float4 g_vAsyncTextureSize : packoffset(c34) = {1,1,0,0};
//   float4 g_vRTTexSize : packoffset(c35);
//   float4 g_vAnisotropy : packoffset(c36);
//   float2 TexelOffs[9] : packoffset(c37) = {0,0,0,0};
//
// SamplerState SamplerLerp_s : register(s0);
// SamplerState WaterNormalsSampler_s : register(s1);
// SamplerState NormalTextureSampler_s : register(s2);
// SamplerState ParalaxRTSampler_s : register(s3);
// Texture2D<float4> NormalTextureSampler : register(t0);
// Texture3D<float4> WaterNormalsSampler : register(t1);
// Texture2D<float4> g_tRTDiffuse : register(t2);
// Texture2D<float4> g_tRTNormals : register(t3);
// Texture2D<float4> g_tDetail0 : register(t4);
// Texture2D<float4> g_tDisplaceRT : register(t5);
//
//
// // 3Dmigoto declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Texture2D<float4> StereoParams : register(t125);
//
//
// void main(
//   float4 v0 : SV_Position0,
//   linear centroid float4 v1 : TEXCOORD0,
//   float4 v2 : TEXCOORD1,
//   float4 v3 : TEXCOORD3,
//   float4 v4 : TEXCOORD4,
//   float4 v5 : TEXCOORD5,
//   float4 v6 : TEXCOORD6,
//   out float4 o0 : SV_Target0,
//   out float4 o1 : SV_Target1,
//   out float4 o2 : SV_Target2,
//   out float2 o3 : SV_Target3)
// {
//   float4 r0,r1,r2,r3,r4,r5,r6,r7;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
//   r0.x = cmp(0 < cb0[88].z);
//   if (r0.x != 0) {
//     r0.x = dot(v5.xyz, v5.xyz);
//     r0.x = cmp(r0.x < 5184);
//     if (r0.x != 0) {
//       r0.xy = cb0[88].xyxx + v5.xz;
//       r0.xy = cb0[88].zwzz * r0.xy;
//       r0.x = g_tDisplaceRT.SampleLevel(ParalaxRTSampler_s, r0.xy, 0).x;
//       r0.x = cmp(0.99000001 < r0.x);
//       if (r0.x != 0) {
//         if (-1 != 0) discard;
//       }
//     }
//   }
//   r0.xyz = NormalTextureSampler.Sample(NormalTextureSampler_s, v1.zw).xyz;
//   r0.xyz = r0.xyz * float3(2,2,2) + float3(-1,-1,-1);
//   r0.w = dot(r0.xyz, r0.xyz);
//   r0.w = rsqrt(r0.w);
//   r0.xyz = r0.xyz * r0.www;
//   r0.w = cmp(g_vAnisotropy.y < 0.5);
//   if (r0.w != 0) {
//     r1.xyzw = g_tRTDiffuse.SampleLevel(SamplerLerp_s, v1.xy, 0).xyzw;
//   }
//   if (r0.w == 0) {
//     r2.x = g_vAnisotropy.x * v4.w;
//     r2.x = g_vAnisotropy.y * r2.x;
//     r2.y = dot(-v5.xyz, -v5.xyz);
//     r2.y = rsqrt(r2.y);
//     r2.yzw = -v5.xyz * r2.yyy;
//     r2.y = dot(r2.yzw, r0.xyz);
//     r2.y = max(0.00100000005, r2.y);
//     r2.x = r2.x / r2.y;
//     r2.x = r2.x / g_vRTTexSize.y;
//     r2.x = min(64, r2.x);
//     r2.y = 0.5 + r2.x;
//     r2.y = (int)r2.y;
//     r2.z = cmp(1 < (int)r2.y);
//     if (r2.z != 0) {
//       r2.zw = float2(1,-1) * v5.xz;
//       r3.x = dot(r2.zw, r2.zw);
//       r3.x = rsqrt(r3.x);
//       r2.zw = r3.xx * r2.zw;
//       r2.zw = g_vRTTexSize.xx * r2.zw;
//       r2.xz = r2.zw * r2.xx;
//       r3.xy = -r2.xz * float2(0.5,0.5) + v1.xy;
//       r2.y = min(5, (int)r2.y);
//       r2.w = (int)r2.y;
//       r2.w = 1 / r2.w;
//       r4.yz = cb0[71].yyxy;
//       r4.xw = cb0[70].xxxy;
//       r5.xyzw = float4(0,0,0,0);
//       r3.zw = r3.xy;
//       r6.x = 0;
//       while (true) {
//         r6.y = cmp((int)r6.x >= (int)r2.y);
//         if (r6.y != 0) break;
//         r6.yz = max(r3.zw, r4.xy);
//         r6.yz = min(r6.yz, r4.zw);
//         r7.xyzw = g_tRTDiffuse.SampleLevel(SamplerLerp_s, r6.yz, 0).xyzw;
//         r5.xyzw = r7.xyzw + r5.xyzw;
//         r3.zw = r2.xz * r2.ww + r3.zw;
//         r6.x = (int)r6.x + 1;
//       }
//       r1.xyzw = r5.xyzw * r2.wwww;
//     } else {
//       r1.xyzw = g_tRTDiffuse.SampleLevel(SamplerLerp_s, v1.xy, 0).xyzw;
//     }
//   }
//   r2.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz;
//   r2.xyz = cb0[74].xxxx * r2.xyz + float3(0.5,0.5,0.5);
//   r1.w = -0.5 + r1.w;
//   r1.w = saturate(r1.w * 2 + 0.5);
//   r3.xyzw = DetailScale.xxyy * v3.xyxy;
//   r2.w = g_tDetail0.Sample(SamplerLerp_s, r3.xy).z;
//   r3.x = g_tDetail0.Sample(SamplerLerp_s, r3.zw).x;
//   r2.w = r3.x + r2.w;
//   r3.x = 0.5 * r2.w;
//   r2.w = -r2.w * 0.5 + 1;
//   r2.w = r1.w * r2.w + r3.x;
//   r2.xyz = r2.xyz * r2.www;
//   r2.w = cmp(0.100000001 < r1.w);
//   if (r2.w != 0) {
//     r3.x = dot(v5.xyz, v5.xyz);
//     r3.x = rsqrt(r3.x);
//     r3.xyz = -v5.xyz * r3.xxx + -g_vDefLightDir.xyz;
//     r3.xyz = float3(0.5,0.5,0.5) * r3.xyz;
//     r3.x = dot(r3.xyz, r3.xyz);
//     r3.x = rsqrt(r3.x);
//     r3.x = r3.y * r3.x;
//     r3.x = max(0, r3.x);
//     r3.y = max(0, -g_vDefLightDir.y);
//     r3.y = min(0.00999999978, r3.y);
//     r3.x = r3.y * r3.x;
//     r3.x = 100 * r3.x;
//     r3.x = log2(r3.x);
//     r3.x = 10 * r3.x;
//     r3.x = exp2(r3.x);
//     r3.x = r3.x * 0.5 + 1;
//     r1.xyz = r1.xyz * r3.xxx + -r2.xyz;
//     r2.xyz = r1.www * r1.xyz + r2.xyz;
//   }
//   if (r0.w != 0) {
//     r1.xy = g_tRTNormals.SampleLevel(SamplerLerp_s, v1.xy, 0).xz;
//   }
//   if (r0.w == 0) {
//     r0.w = g_vAnisotropy.x * v4.w;
//     r0.w = g_vAnisotropy.y * r0.w;
//     r1.z = dot(-v5.xyz, -v5.xyz);
//     r1.z = rsqrt(r1.z);
//     r3.xyz = -v5.xyz * r1.zzz;
//     r1.z = dot(r3.xyz, r0.xyz);
//     r1.z = max(0.00100000005, r1.z);
//     r0.w = r0.w / r1.z;
//     r0.w = r0.w / g_vRTTexSize.y;
//     r0.w = min(64, r0.w);
//     r1.z = 0.5 + r0.w;
//     r1.z = (int)r1.z;
//     r3.x = cmp(1 < (int)r1.z);
//     if (r3.x != 0) {
//       r3.xy = float2(1,-1) * v5.xz;
//       r3.z = dot(r3.xy, r3.xy);
//       r3.z = rsqrt(r3.z);
//       r3.xy = r3.xy * r3.zz;
//       r3.xy = g_vRTTexSize.xx * r3.xy;
//       r3.xy = r3.xy * r0.ww;
//       r3.zw = -r3.xy * float2(0.5,0.5) + v1.xy;
//       r0.w = min(5, (int)r1.z);
//       r1.z = (int)r0.w;
//       r1.z = 1 / r1.z;
//       r4.yz = cb0[71].yyxy;
//       r4.xw = cb0[70].xxxy;
//       r5.xy = float2(0,0);
//       r5.zw = r3.zw;
//       r6.x = 0;
//       while (true) {
//         r6.y = cmp((int)r6.x >= (int)r0.w);
//         if (r6.y != 0) break;
//         r6.yz = max(r5.zw, r4.xy);
//         r6.yz = min(r6.yz, r4.zw);
//         r6.yz = g_tRTNormals.SampleLevel(SamplerLerp_s, r6.yz, 0).xz;
//         r5.xy = r6.yz + r5.xy;
//         r5.zw = r3.xy * r1.zz + r5.zw;
//         r6.x = (int)r6.x + 1;
//       }
//       r1.xy = r5.xy * r1.zz;
//     } else {
//       r1.xy = g_tRTNormals.SampleLevel(SamplerLerp_s, v1.xy, 0).xz;
//     }
//   }
//   r1.xy = r1.xy * float2(2,2) + r0.xz;
//   r0.xz = float2(-1,-1) + r1.xy;
//   r0.w = dot(r0.xyz, r0.xyz);
//   r0.w = rsqrt(r0.w);
//   r1.xyz = r0.xyz * r0.www;
//   r3.x = dot(r2.xyz, cb0[77].xyzx);
//   r3.x = -g_vSpecSettings.z + r3.x;
//   r3.x = 5 * r3.x;
//   r3.x = max(0, r3.x);
//   r3.x = min(2, r3.x);
//   r3.y = 1 + -r1.w;
//   r3.x = r3.x * r3.y;
//   r3.y = saturate(-100 * g_vDefLightDir.y);
//   r3.x = r3.x * r3.y;
//   r4.y = g_vSpecSettings.y * r3.x;
//   r5.xy = g_vWaterDesc.xx * v3.xy;
//   r5.z = Anim.x;
//   r3.xzw = WaterNormalsSampler.Sample(WaterNormalsSampler_s, r5.xyz).xyz;
//   r6.xyz = float3(11,11,5) * r5.xyz;
//   r6.xy = WaterNormalsSampler.Sample(WaterNormalsSampler_s, r6.xyz).xz;
//   r5.xyz = float3(0.200000003,0.200000003,1) * r5.xyz;
//   r5.xyz = WaterNormalsSampler.Sample(WaterNormalsSampler_s, r5.xyz).xyz;
//   if (r2.w != 0) {
//     r5.xyz = r5.xyz * float3(2,2,2) + float3(-1,-1,-1);
//     r2.w = dot(v5.xyz, v5.xyz);
//     r2.w = sqrt(r2.w);
//     r2.w = -5000 + r2.w;
//     r2.w = saturate(0.000199999995 * r2.w);
//     r6.z = cmp(r2.w < 0.999000013);
//     if (r6.z != 0) {
//       r3.xzw = r3.xzw * float3(2,2,2) + float3(-1,-1,-1);
//       r6.xy = r6.xy * float2(2,2) + float2(-1,-1);
//       r6.xy = float2(0.300000012,0.300000012) * r6.xy;
//       r6.xy = r3.xw * g_vWaterDesc.yy + r6.xy;
//       r3.xw = r5.xz * float2(0.5,0.5) + r6.xy;
//       r6.x = dot(r3.xzw, r3.xzw);
//       r6.x = rsqrt(r6.x);
//       r3.xzw = r6.xxx * r3.xzw;
//       r6.x = cmp(0.00100000005 < r2.w);
//       if (r6.x != 0) {
//         r5.w = 10 * r5.y;
//         r6.x = dot(r5.xzw, r5.xzw);
//         r6.x = rsqrt(r6.x);
//         r6.xyz = r5.xwz * r6.xxx + -r3.xzw;
//         r3.xzw = r2.www * r6.xyz + r3.xzw;
//       }
//     } else {
//       r5.xyz = float3(1,10,1) * r5.xyz;
//       r2.w = dot(r5.xyz, r5.xyz);
//       r2.w = rsqrt(r2.w);
//       r3.xzw = r5.xyz * r2.www;
//     }
//     r5.xz = g_vWaterDesc.zz * r3.xw;
//     r5.y = r3.z;
//     r2.w = dot(r5.xyz, r5.xyz);
//     r2.w = rsqrt(r2.w);
//     r5.xyz = r5.xyz * r2.www;
//     r2.w = dot(-v5.xyz, -v5.xyz);
//     r2.w = rsqrt(r2.w);
//     r6.xyz = -v5.xyz * r2.www;
//     r2.w = dot(r6.xyz, r5.xyz);
//     r2.w = 1 + r2.w;
//     r2.w = r2.w * r2.w;
//     r5.x = r2.w * r2.w;
//     r2.w = r5.x * r2.w;
//     r2.w = 1 / r2.w;
//     r2.w = r2.w * r1.w;
//     r2.w = min(1, r2.w);
//     r4.z = r2.w * g_vWaterColor.w + 0.00999999978;
//     r2.w = -0.100000001 + -g_vDefLightDir.y;
//     r2.w = saturate(4 * r2.w);
//     r0.xyz = -r0.xyz * r0.www + r3.xzw;
//     r0.xyz = r1.www * r0.xyz + r1.xyz;
//     r0.w = dot(r0.xyz, r0.xyz);
//     r0.w = rsqrt(r0.w);
//     r1.xyz = r0.xyz * r0.www;
//     r0.x = 0.100000001 + r2.w;
//     r0.x = g_vWaterSpecColor.w * r0.x;
//     r0.z = g_vWaterSpecColor.y * r3.y;
//     r0.y = r0.z * r1.w;
//     r4.x = g_vSpecSettings.x;
//     r0.xy = r0.xy + -r4.xy;
//     r4.xy = r1.ww * r0.xy + r4.xy;
//     r4.w = 1;
//   } else {
//     r4.x = g_vSpecSettings.x;
//     r4.zw = float2(0,0.075000003);
//   }
//   o1.xyz = r1.xyz * float3(0.5,0.5,0.5) + float3(0.5,0.5,0.5);
//   r4.x = 0.00392156886 * r4.x;
//   r0.x = cmp(g_vKSettings.x < 0.5);
//   if (r0.x != 0) {
//     o3.xy = float2(0,0);
//   } else {
//     r0.xyz = v5.xyz;
//     r0.w = 1;
//     r1.x = dot(r0.xyzw, cb0[55].xyzw);
//     r1.y = dot(r0.xyzw, cb0[56].xyzw);
//     r1.z = dot(r0.xyzw, cb0[58].xyzw);
//     r1.xy = r1.xy / r1.zz;
//     r3.x = dot(r0.xyzw, g_mPrevObjViewProj._m00_m10_m20_m30);
//     r3.y = dot(r0.xyzw, g_mPrevObjViewProj._m01_m11_m21_m31);
//     r0.x = dot(r0.xyzw, g_mPrevObjViewProj._m03_m13_m23_m33);
//     r0.xy = r3.xy / r0.xx;
//     r0.xy = r1.xy + -r0.xy;
//     r0.z = g_vKSettings.y * -r0.y;
//     r0.y = dot(r0.xz, r0.xz);
//     r0.y = sqrt(r0.y);
//     r0.w = cmp(2 < r0.y);
//     if (r0.w != 0) {
//       r0.y = 2 / r0.y;
//       o3.xy = r0.xz * r0.yy;
//     } else {
//       o3.xy = r0.xz;
//     }
//   }
//   o0.xyz = r2.xyz;
//   o0.w = 0;
//   o1.w = 0;
//   o2.xyzw = r4.yxzw;
//   return;
// }
//////////////////////////////// HLSL Errors ////////////////////////////////
// Z:\home\tacitus\.steam\debian-installation\steamapps\common\IL-2 Sturmovik Battle of Stalingrad\bin\game\ShaderFixes\01484a9e1659c777-ps_replace.txt(36,10-51): error X3017: 'TexelOffs': initializer does not match type
/////////////////////////////////////////////////////////////////////////////
